#if !defined(_HUGE_GLOBAL_H_)
#define _HUGE_GLOBAL_H_

#include <stdint.h>

#include <cassert>

/**
  * Global namespace HUGE
  */
namespace HUGE
{
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
   * Redefinition of assert.
   */
 #define hgAssert(expression) assert(expression)

# if defined(__GNUC__)
 /**
   * Typedefs of the native types for the GCC Compiler
   * for using within *NIX systems.
   */

 /**
   * Fixed-size platform-independent native types.
   */
 typedef int8_t       HGint8;
 typedef int16_t      HGint16;
 typedef int32_t      HGint32;
 typedef int64_t      HGint64;
 typedef uint8_t      HGuint8;
 typedef uint16_t     HGuint16;
 typedef uint32_t     HGuint32;
 typedef uint64_t     HGuint64;
 typedef float        HGfloat32;
 typedef double       HGfloat64;

 typedef HGint8       HGbool8;

 /**
   * Fastest platform-dependent types.
   */
 typedef signed int   HGint;
 typedef unsigned int HGuint;
 typedef float        HGfloat;
 typedef HGint        HGbool;

 /**
   * Special typedefs
   */
 typedef HGfloat HGangle;

# elif defined(_MSC_VER)

 /**
   * Typedefs of the native types for the MS Compiler
   * for using within Win systems.
   */

 /**
   * Fixed-size platform-independent native types.
   */
 typedef __int8					HGint8;
 typedef __int16				HGint16;
 typedef __int32				HGint32;
 typedef __int64				HGint64;
 typedef unsigned __int8		HGuint8;
 typedef unsigned __int16		HGuint16;
 typedef unsigned __int32		HGuint32;
 typedef unsigned __int64		HGuint64;

 typedef float        HGfloat32;
 typedef double       HGfloat64;

 typedef HGint8       HGbool8;

 /**
   * Fastest platform-dependent types.
   */
 typedef signed int   HGint;
 typedef unsigned int HGuint;
 typedef float        HGfloat;
 typedef HGint        HGbool;

 /**
   * Special typedefs
   */
 typedef HGfloat HGangle;

# endif
 ///////////////////////////////////////////////////////////////////////////////////////////////////
}
#endif // _HUGE_GLOBAL_H_
